# 储存所有EXCEL读取格式
class ItemType:
    def __init__(self):
        self.itemReaderDicForType = {}  # 储存EXCEL读取格式对象的字典，key为道具 type
        self.itemReaderDicForName = {}  # 储存EXCEL读取格式对象的字典，key为道具 name
        self.erro = []  # 储存错误信息的列表

    def SetExcelReader(self, dic):
        """
        设置EXCEL读取格式\n
        :param dic: EXCEL读取设置中配置文件的数据
        :return: 设置成功返回True
        """
        isOk = True
        for key, value in dic.items():
            itemReader = ItemReader()
            itemReader.NAME = key
            itemReader.TYPE = value['type']
            itemReader.INDEX = value['index']
            if '演示' not in key:
                if len(value['type']) > 0:
                    for excelType in value['type']:
                        if excelType not in self.itemReaderDicForType.keys():
                            self.itemReaderDicForType[excelType] = itemReader
                else:
                    self.erro.append(f'{key}表格 type 错误，请检查配置是否正确')
                    isOk = False

                if len(value['index']) >= 2:
                    if key not in self.itemReaderDicForName.keys():
                        self.itemReaderDicForName[key] = itemReader
                else:
                    self.erro.append(f'{key}表格 index 错误，请检查配置是否正确')
                    isOk = False
        return isOk

    def GetItemReaderForType(self, typeNumber):
        """
        通过道具类型获取对应的 ItemReader 对象\n
        :param typeNumber: 道具类型编码
        :return: 返回 ItemReader 对象
        """
        typeNumber = int(typeNumber)
        if typeNumber in self.itemReaderDicForType.keys():
            itemReader = self.itemReaderDicForType[typeNumber]
            return itemReader
        else:
            return None

    def GetItemReaderForName(self, excel):
        """
        通过excel名称获取对应的 ItemReader 对象\n
        :param excel: EXCEL名称
        :return: 返回 ItemReader 对象
        """
        if excel in self.itemReaderDicForName.keys():
            itemReader = self.itemReaderDicForName[excel]
            return itemReader
        else:
            return None


# 储存单个EXCEL读取格式配置
class ItemReader:
    def __init__(self):
        self.NAME = None  # 字符串
        self.TYPE = None  # 列表
        self.INDEX = None  # 列表
